package ar.com.larreta.grilla.client;

import ar.com.larreta.vista.client.recursos.Iconos;

import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.google.gwt.user.client.ui.AbstractImagePrototype;

public abstract class SectorConGrilla extends FieldSet implements ConGrilla {
	
	protected Boolean botonAgregarEnToolBar = Boolean.FALSE;
	protected Grilla grilla;
	protected Button botonAgregar;
	
	public SectorConGrilla(){}
	
	public SectorConGrilla(String titulo){
		setHeading(titulo);
		
		grilla = new Grilla(null, getConfiguracionColumnas(), getNombreLista());
		add(grilla);
		
		botonAgregar = new Button();
		botonAgregar.setIcon(AbstractImagePrototype.create(Iconos.INSTANCIA.agregar()));
		botonAgregar.addSelectionListener(new SelectionListener<ButtonEvent>() {
			
			@Override
			public void componentSelected(ButtonEvent ce) {
				botonAgregarSeleccionado();
			}
		});
		
		add(grilla.getToolBar());
		
	}
	
	protected void agregarBotonAgregar(){
		getGrilla().getToolBar().add(botonAgregar);
		botonAgregarEnToolBar = Boolean.TRUE;
	}
	
	protected void eliminarBotonAgregar(){
		if (botonAgregarEnToolBar){
			getGrilla().getToolBar().remove(botonAgregar);
			botonAgregarEnToolBar = Boolean.FALSE;
		}
	}
	
	
	public void estadoBotonesSectorConGrilla(Boolean estado){
		if (estado){
			agregarBotonAgregar();
		} else {
			eliminarBotonAgregar();
		}
		getGrilla().getItemModificar().setEnabled(estado);
		getGrilla().getItemBorrar().setEnabled(estado);
		getGrilla().getItemSeleccionarTodos().setEnabled(estado);
		getGrilla().asignarEstadoBotones();
	}
	
	public Grilla getGrilla(){
		return grilla;
	}
	
	public abstract ColumnModel getConfiguracionColumnas();
	public abstract String getNombreLista();
	public abstract void botonAgregarSeleccionado();

}
